package saa;

import java.util.Vector;

import pt.c01interfaces.s01chaveid.s01base.impl.BaseConhecimento;
import pt.c01interfaces.s01chaveid.s01base.inter.IBaseConhecimento;
import pt.c01interfaces.s01chaveid.s01base.inter.IDeclaracao;
import pt.c01interfaces.s01chaveid.s01base.inter.IEnquirer;
import pt.c01interfaces.s01chaveid.s01base.inter.IObjetoConhecimento;
import pt.c01interfaces.s01chaveid.s01base.inter.IResponder;

public class EnquirerBasic implements IEnquirer 
{
	private String[] banco_animal;
	private IObjetoConhecimento obj;
	private Vector<String> banco_dados;
	private boolean candidato[];
	
	public EnquirerBasic()
	{
		// Cria uma lista com o nome dos animais no banco de dados
		IBaseConhecimento bc = new BaseConhecimento();
		banco_animal = bc.listaNomes();
		// Cria o array candidato[] e atribui todos como true
		candidato = new boolean[banco_animal.length];
		for(int i = 0; i < banco_animal.length; i++){
			candidato[i] = true;
		}
		// Cria o banco_dados
		obj = new IObjetoConhecimento;
		banco_dados = new Vector();
		for(int i = 0; i < banco_animal.length; i++){
			obj =  bc.recuperaObjeto(banco_animal[i]);
			while(obj.primeira() != null){
				int aux = banco_dados.indexOf(obj.primeira().getPropriedade());
				if(aux != -1){
					banco_dados.set((banco_anima.lenght)*aux +  i, obj.primeira().getValor());
				}
				else{
					banco_dados.add(obj.primeira().getPropriedade());
					for(int j = 0; j < banco_animal.length; j++){
						j == i ? banco_dados.add(obj.primeira().getValor()) : banco_dados.add("nao sei");
					}
				obj.proxima();
			}		
		}
	}
	
	public void connect(IResponder responder) 
	{
		String resposta;
		int n = banco_dado.size();
		for(int i = 0; i < n; i = i + banco_animal.length){
			resposta = responder.ask(banco_dados.get(i));
			for(int j = 0; j < banco_animal.legnth; j++){
				resposta.equalsIgnoreCase(banco_dados[i*banco_animal.lenght + j + 1]) ? : candidato[j] = false;
			}
		}
		resposta = "nenhum";
		for(int j = 0; j < banco_animal.legnth; j++){
			candidato[j] ? resposta = banco_animal[j] : ;
		}
		responder.finalAnswer(resposta);		
	}
}
